//给你一个由小写英文字母组成的回文字符串 palindrome ，请你将其中 一个 字符用任意小写英文字母替换，使得结果字符串的 字典序最小 ，且 不是 回文
//串。 
//
// 请你返回结果字符串。如果无法做到，则返回一个 空串 。 
//
// 如果两个字符串长度相同，那么字符串 a 字典序比字符串 b 小可以这样定义：在 a 和 b 出现不同的第一个位置上，字符串 a 中的字符严格小于 b 中的
//对应字符。例如，"abcc” 字典序比 "abcd" 小，因为不同的第一个位置是在第四个字符，显然 'c' 比 'd' 小。 
//
// 示例 1： 
//
// 
//输入：palindrome = "abccba"
//输出："aaccba"
//解释：存在多种方法可以使 "abccba" 不是回文，例如 "zbccba", "aaccba", 和 "abacba" 。
//在所有方法中，"aaccba" 的字典序最小。 
//
// 示例 2： 
//
// 
//输入：palindrome = "a"
//输出：""
//解释：不存在替换一个字符使 "a" 变成非回文的方法，所以返回空字符串。 
//
// 
//
// 提示： 
//
// 
// 1 <= palindrome.length <= 1000 
// palindrome 只包含小写英文字母。 
// 
//
// Related Topics 贪心 字符串 👍 78 👎 0


package LeetCode.editor.cn;


/**
 * @author ldltd
 * @date 2025-03-05 09:02:35
 * @description 1328.破坏回文串
 
 */
 
public class BreakAPalindrome {
    public static void main(String[] args) {
    //测试代码
    BreakAPalindrome fun = new BreakAPalindrome();
    Solution solution= fun.new Solution();
    solution.breakPalindrome("aba");
    }

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
        //越前面的更换为字典序更小的，则整体的字典序越小
    //只要不是a，就换成-1可行吗？如果所有的都是a，则把字符串最后一个变成+1
    //其中遍历终点为 i< (n+1)/2
    //这种情况aba，会被替换成aaa
    //ccccacccc 也会被替换成ccccbcccc还是回文串
    public String breakPalindrome(String palindrome) {
        int m = palindrome.length();
        if(palindrome.length()<2) return "";
        StringBuilder sb=new StringBuilder(palindrome);
        int end = (palindrome.length()) / 2;
        for (int i = 0; i < end; i++) {
            if(palindrome.charAt(i)!='a'){
                sb.setCharAt(i,'a');
                return sb.toString();
            }
        }
        sb.setCharAt(m-1,(char)(palindrome.charAt(m-1)+1));
        return sb.toString();
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
